#pragma once
struct Vector3
{
	float x, y, z;

	Vector3();
	Vector3(float x, float y, float z);
	Vector3(float value);

	friend Vector3 operator+(const Vector3& left, const Vector3& right);
	friend Vector3 operator-(const Vector3& left, const Vector3& right);

	friend Vector3 operator*(const float& value, const Vector3& right);
	friend Vector3 operator*(const Vector3& left, const float& value);
	friend float operator*(const Vector3& left, const Vector3& right);

	const Vector3& operator+=(const Vector3& right);
	const Vector3& operator-=(const Vector3& right);
	const Vector3& operator*=(const float& right);

	float SquareLength() const;
	float Length() const;

	static Vector3 Normalize(const Vector3& vec);
	static float Dot(const Vector3& left, const Vector3& right);
	static Vector3 Cross(const Vector3& left, const Vector3& right);
};
